import { mixin } from '../../utils/mixin'
const app = getApp();
Page({
  behaviors: [mixin],
  data: {
    // 是否显示倒计时: true 显示 ｜ false 不显示
    isShow: false,
    // !注意不能定义成对象，双向绑定失效=》简易实现
    // formData: {
    mobile: '13888888800',
    code: ''
    // }
  },
  onLoad(options) {
    console.log('401回跳地址：', options.redirectUrl)
    // 追加存到组件实例上
    this.redirectUrl = options.redirectUrl
  },
  // 登录
  async submitForm() {
    /**
     * 登录实现的流程：
     * 1. 双向绑定=》获取表单中数据
     * 2. 校验表单中数据
     * 3. 校验通过后调用接口登录，获取 token存全局
     * 4. 跳转
     *    1. 存在 401 的回跳地址=》优先跳转
     *    2. 不存在，跳转默认我的页面
     *    注意：要判断是否是 tabBar页面，使用对应的方法跳转
     */
    // 用户填写的手机号和验证码
    const { mobile, code } = this.data
    if (!/^[1][3-8][0-9]{9}$/.test(mobile)) return wx.utils.message('手机号格式错误！')
    if (!/^\d{6}$/.test(code)) return wx.utils.message('验证码为6位数字！')
    // 调用接口登录/注册
    const data = await wx.http.post('/login', { mobile, code })
    // 存储 token 到全局
    app.setToken(`Bearer ${data.token}`)
    // 跳转
    // 处理回跳地址=> 短路写法
    const url = this.redirectUrl || '/pages/my/index'
    console.log('回跳地址：', url)
    // url 可能是 tabBar页面/也可能普通页面
    if (this.isTabBar(url)) {
      wx.switchTab({
        url
      })
    } else {
      wx.navigateTo({
        url
      })
    }
  },
  // 获取验证码
  async getCode() {
    /**
     * 流程：
     * 1. 校验手机号格式
     * 2. 校验通过后，调用后台 api 发送验证码
     * 3. 开启倒计时（60s）,60s 内不能重复发送
     * /^[1][3-8][0-9]{9}$/
     */
    const { mobile } = this.data
    if (!/^[1][3-8][0-9]{9}$/.test(mobile)) return wx.utils.message('手机号格式错误！')
    console.log('发送验证码')
    const data = await wx.http.get('/code', { mobile })
    // 注意实际开发：验证码发送到用户填写的手机上
    console.log('验证码数据：', data.code)
    // 测试：把返回的验证码存到系统的粘贴板=>复制
    wx.setClipboardData({
      data: data.code
    })
    // 开始倒计时
    this.setData({
      isShow: true,
      code: data.code
    })
  },
  // 倒计时结束执行
  finished() {
    // 不显示倒计时
    this.setData({
      isShow: false
    })
  }
})
